package com.klm.easymq.service;

/**
 * RocketMQ消息生产者服务接口
 */
public interface RocketMQProducerService {
    
    /**
     * 发送同步消息
     * @param topic 主题
     * @param message 消息内容
     * @return 发送结果
     */
    boolean sendSyncMessage(String topic, String message);
    
    /**
     * 发送同步消息
     * @param topic 主题
     * @param message 消息内容
     * @param tag 消息标签
     * @param messageKey 消息键
     * @return 发送结果
     */
    boolean sendSyncMessage(String topic, String message, String tag, String messageKey);
    
    /**
     * 发送异步消息
     * @param topic 主题
     * @param message 消息内容
     */
    void sendAsyncMessage(String topic, String message);
    
    /**
     * 发送异步消息
     * @param topic 主题
     * @param message 消息内容
     * @param tag 消息标签
     * @param messageKey 消息键
     */
    void sendAsyncMessage(String topic, String message, String tag, String messageKey);
    
    /**
     * 发送单向消息
     * @param topic 主题
     * @param message 消息内容
     * @param tag 消息标签
     * @param messageKey 消息键
     */
    void sendOnewayMessage(String topic, String message, String tag, String messageKey);
    
    /**
     * 发送延迟消息
     * @param topic 主题
     * @param message 消息内容
     * @param delayLevel 延迟级别 (1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h)
     * @return 发送结果
     */
    boolean sendDelayMessage(String topic, String message, int delayLevel);
    
    /**
     * 发送顺序消息
     * @param topic 主题
     * @param message 消息内容
     * @param hashKey 用于选择队列的key
     * @return 发送结果
     */
    boolean sendOrderedMessage(String topic, String message, String hashKey);
} 